1

时间:2017年04月06日

说明:本文部分内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原作者所有。《Linux命令行与shell脚本编程大全》(第三版)第三章学习总结

第三章:基本的bash shell命令

本章内容:

使用shell
bash手册
浏览文件系统
文件和目录列表
管理文件和目录
查看文件内容

3.1 启动shell

GNU bash shell能提供对Linux系统的交互式访问。

/etc/passwd文件包含了所有系统用户账户列表以及每个用户的基本配置信息。
以下是从/etc/passwd文件中取出的样例条目:

shell:x:1001:1003::/home/shell:/bin/bash

每个条目有七个字段,字段之间用冒号分隔。大多数条目将在第七章讲解,最后一个字段制定了用户使用的shell程序。

3.2 shell提示符

一旦启动了终端仿真软件包或者登陆Linux虚拟控制台,你就会看到shell CLI提示符。提示符就是进入shell世界的大门,是你输入shell命令的地方。默认bash shell提示符是美元符号($),这个符号表明shell在等待用户输入。shell提示符并非一成不变。你可根据自己的需要改变它。第六章讲到了如何修改shell CLI提示符。

窍门:如果你还是CLI新手,请记住,在输入shell命令之后,需要按回车键才能让shell执行你输入的命令。

3.3 bash手册

大多数Linux发行版自带用以查找shell命令及其他GNU工具信息的在线手册。熟悉手册对使用各种Linux工具大有裨益,尤其是在你要弄清楚各种命令行参数的时候。man命令用来访问存储在Linux系统上的手册页面。例如:man ls,查找 ls 命令的手册页面。读完了手册页,可以点击q键退出。

窍门:如果你是新接触bash shell,可能一开始会觉得手册页并不太有用。但是,如果养成了阅读手册的习惯,尤其是阅读第一段或是 DESCRIPTION 部分的前两段,最终你会学到各种技术行话,手册页也会变得越来越有用。

窍门:bash手册甚至包含了一份有关其自身的参考信息。输入man man来查看与手册相关的手册页。

手册页将与命令相关的信息分成了不同的节。每一节惯用的命名标准如下:

Name:显示命令名与一段简短的描述
Synopsis:命令的语法
Confi guration:命令配置信息
Description:命令的一般性描述
Options:命令选项描述
Exit Status:命令的退出状态指示
Return Value:命令的返回值
Errors:命令的错误消息
Environment:描述所使用的环境变量
Files:命令用到的文件
Versions:命令的版本信息
Conforming To:命令所遵从的标准
Notes:其他有帮助的资料
Bugs:提供提交bug的途径
Example:展示命令的用法
Authors:命令开发人员的信息
Copyright:命令源代码的版权状况
See Also:与该命令类型的其他命令

窍门:如果不记得命令名怎么办?可以使用关键字搜索手册页。语法是:man -k 关键字。例如,要查找与终端命令相关的命令,可以输入man -k terminal。

除了对节按照惯例进行命名,手册页还有对应的内容区域。每个内容区域都分配了一个数字。从1到9,如下:

1:可执行程序或shell命令
2:系统调用
3:库调用
4:特殊文件
5:文件格式与约定
6:游戏
7:概览、约定
8:超级用户和系统管理员命令
9:内核例程

可以使用命令man 数字 ls,输入man 1 ls阅读第1部分。

3.4 浏览文件系统

当登录系统并获得shell命令提示后,你通常位于自己的主目录中。

3.4.1 Linux文件系统

Linux虚拟目录接口只包含一个称为跟(root)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径一一列出。

窍门:你将会发现Linux使用正斜线(/)而不是反斜线()在文件路径中划分目录。在Linux中,反斜线用来标识转义字符,要是用在文件路径中的话会导致各种各样的问题。如果你之前用的是Windows环境,就需要一点时间来适应。

Linux文件系统结构是从Unix文件结构演变过来的。在Linux文件系统中,通用的目录名用于表示一些常见的功能。一些常见的Linux顶层虚拟目录及其内容如下:

/:虚拟目录的根目录。通常不会再这里存储文件
/bin:二进制目录,存放许多用户级的GNU工具
/boot:启动目录,存放启动文件
/dev:设备目录,Linux在这里创建设备节点
/etc:系统配置文件目录
/home:主目录,Linux在这里创建用户目录
/lib:库目录,存放系统和应用程序的库文件
/media:媒体目录,可移动媒体设备的常用挂载点
/mnt:挂载目录,另一个可移动媒体设备的常用挂载点
/opt:可选目录,常用于存放第三方软件包和数据文件
/proc:进程目录,存放现有硬件及当前进程的相关信息
/root:root用户的主目录
/sbin:系统二进制目录,存放许多GNU管理员级工具
/run:运行目录,存放系统运行时的运行时数据
/srv:服务目录,存放本地服务的相关文件
/sys:系统目录,存放系统硬件信息的相关文件
/tmp:临时目录,可以在该目录中创建和删除临时工作文件
/usr:用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
/var:可变目录,用以存放经常变化的文件,比如日志文件

3.4.2 遍历目录

在Linux文件系统上,可以使用切换目录命令cd将shell会话切换到另一个目录。

命令格式:cd destination
命令说明:cd命令可接受单个参数destination,用以指定想切换到的目录名。
    如果没有为cd命令指定目标路径,它将切换到用户主目录。
命令演示:cd test
演示说明:进入目录名为test的目录

destination参数可以用两种方式表示:一种是使用绝对路径,另一种是使用相对文件路径。

绝对文件路径:绝对文件路径总是以正斜线(/)作为起始,指明虚拟文件系统的根目录。

窍门:在切换到新的当前工作目录时使用pwd命令,是很好的习惯。因为很多shell命令都是在当前工作目录中操作的,在发出命令之前,你应该始终确保自己处在正确的目录之中。

相对文件路径:相对文件路径允许用户指定一个基于当前位置的目标文件路径。

有两个特殊字符可用于相对文件路径中:

单点符(.):表示当前目录
双点符(..):表示当前目录的父目录

3.5 文件和目录列表

要想知道系统中有哪些文件,可以使用列表命令(ls)。

3.5.1 基本列表功能

命令格式:ls 
命令说明:显示当前目录下的文件和目录

命令格式:ls -F 
命令格式:显示当前目录下的文件和目录,在目录后加了正斜线,在可执行文件后加了星号

命令格式:ls -a
命令说明:显示当前目录下的文件和目录,包括隐藏文件和普通文件

命令格式:ls -F -R
命令说明:显示当前目录下的文件和目录,递归显示子目录中的文件

窍门:选项并不一定要像例子中那样分开输入:ls -F -R。它们可以进行如下合并:ls -FR。

3.5.2 显示长列表

命令格式:ls -l
命令说明:显示当前目录下的文件和目录,包含了目录中每个文件的更多相关信息

每一行都包含了关于文件或目录的下述信息:

文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b);
文件的权限(参见第六章);
文件的硬链接总数;
文件属主的用户名;
文件属组的组名;
文件的大小(以字节为单位);
文件的上次修改时间;
文件名或目录名。

窍门:别忘了可以将多个参数结合起来使用。一些参数组合不仅能够显示出所需的内容,而且还容易记忆,例如:ls -alF。

3.5.3 过滤输出列表

命令格式:ls -l study
命令说明:显示当前目录下的文件和目录,根据字符串过滤文件或目录

当用户指定特定文件的名称作为过滤器时,ls命令只会显示该文件的信息。有时你可能不知道要找的那个文件的确切名称。ls命令能够识别标准通配符,并在过滤器中用他们进行模式匹配:

问号(?):代表一个字符
星号(*):代表零个或多个字符
中括号([ab]):代表a或b
感叹号([!a]):代表不包含a

3.6 处理文件

shell提供了很多在Linux文件系统上操作文件的命令。

3.6.1 创建文件

命令:touch

命令格式:touch 文件名
命令说明:使用touch创建文件
命令演示:touch test
演示说明:创建一个名为test的文件

touch命令修改文件的修改时间

命令格式:touch 文件名
命令说明:使用touch文件修改时间

3.6.2 复制文件

命令:cp

命令格式:cp 源对象 目标对象
命令说明:将源对象复制到目标对象

cp source destination
当source和destination参数都是文件名时,cp命令将源文件复制成一个新文件,并且以destination命名。

cp -i 源对象 目标对象
复制文件时,如果目标文件已近存在,询问是否需要覆盖已有文件。

cp -R 源对象 目标对象
可以用cp -R在一条命令中递归地复制整个目录的内容。

3.6.3 制表键自动补全

制表键自动补全允许你的输入文件名或目录名时按一下制表键,让shell帮忙将内容补充完整。

3.6.4 链接文件

类似Windows快捷方式。为文件创建快捷方式。比较难以理解。

3.6.5 重命名文件

在Linux中,重命名文件称为移动(moving)。mv命令可以将文件和目录移动到另一个位置或重新命名。

命令:mv

命令格式:mv 源对象 目标对象
命令说明:将源对象移动到目标对象或将源对象重命名为目标对象

窍门:和cp命令类似,也可以在mv命令中使用-i参数。这样在命令试图覆盖已有的文件时,你就会得到提示。

3.6.6 删除文件

在Linux中,删除(deleting)叫作移除(removing)。

命令:rm

命令格式:rm file
命令说明:删除文件名为file的文件

命令格式:rm -i file
命令说明:删除文件时,提示是否确认删除。

3.7 处理目录

3.7.1 创建目录

在Linux中创建目录很简单,用mkdir命令即可。

命令:mkdir

命令格式:mkdir 目录名
命令说明:创建一个指定目录名的目录

命令格式:mkdir -p 目录名/子目录
命令说明:通过加入-p参数,同时创建多个目录和子目录

3.7.2 删除目录

命令:mkdir

命令格式:mkdir 目录名
命令说明:删除一个指定目录名的目录,目录必须为空才能删掉

命令:rm

命令格式:rm -r 目录名
命令说明:删除指定目录名的目录,会删除目录下子目录及目录下文件

命令:rm

命令格式:rm -rf 目录名

命令说明:删除目录及其所有内容。rm -rf命令既没有警告信息,也没有声音提示。这肯定是一个危险的工具,尤其是在拥有超级用户权限的时候。务必谨慎使用,请再三检查你所要进行的操作是否符合预期。

3.8 查看文件内容

3.8.1 查看文件类型

命令:file

命令格式:file 文件名
命令说明:查看文件的类型

3.8.2 查看整个文件

Linux上有三个不同的命令可以完成这个任务。cat命令、more命令、less命令。

命令:cat

命令格式:cat 文件名
命令说明:查看指定文件的内容

命令格式:cat -n 文件名
命令说明:查看指定文件的内容,-n参数会给所有的行加上行号。

命令格式:cat -b 文件名
命令说明:查看指定文件的内容,-b参数会给有文本的行加上行号。

命令格式:cat -T 文件名
命令说明:查看指定文件的内容,-T参数会用^I字符组合去替换文中的所有制表符。

命令:more

命令格式:more 文件名
命令说明:查看指定文件的内容

命令:less

命令格式:less 文件名
命令说明:查看指定文件的内容

3.8.3 查看部分文件

命令:tail

命令格式:tail 文件名
命令说明:查看指定文件的末尾10行内容

命令格式:tail -n 文件名
命令说明:查看指定文件的末尾n行内容

命令格式:tail -f 文件名
命令说明:查看指定文件的内容。用于实时监测系统日志文件。

命令:head

命令格式:head 文件名
命令说明:查看指定文件的前10行内容

命令格式:head -n 文件名
命令说明:查看指定文件的前n行内容

3.9 小结

本章涵盖了在shell提示符下操作Linux文件系统的基础知识。主要介绍了cd、ls、mv、rm、mkdir、rmdir、cat、more、less、tail、head命令。

本章学习命令个人总结如下:

cd:切换或进入目录
ls:显示当前目录下的目录和文件
mv:移动或重命名目录或文件
rm:删除目录或文件
mkdir:创建目录
rmdir:删除目录
cat:查看文本文件全部内容
more:查看文本文件全部内容
less:查看文本文件全部内容
tail:查看文本文件尾部部分内容
head:查看文本文件头部部分内容

妙手空空
1.3k 声望370 粉丝

博观而约取,厚积而薄发